import CryptoJS from 'crypto-js'

/**
 * MD5 加密，默认从第6位开始截取，默认盐值来自环境变量 VITE_PASSWORD_SALT
 * @param {string} plaintext - 明文密码
 * @param {string} [salt] - 自定义盐值，默认读取环境变量 VITE_PASSWORD_SALT
 * @param {Object} [options] - 可选参数
 * @param {number} [options.sliceStart=5] - 截取开始位置（默认从第6位，即索引5）
 * @param {number} [options.sliceEnd=17] - 截取结束位置（默认到第18位，即索引17）
 * @returns {string} 加密后的字符串
 */
export function md5EncryptWithSalt(
  plaintext,
  salt = import.meta.env.VITE_PASSWORD_SALT || '',
  options = {}
) {
  const { sliceStart = 5, sliceEnd = 17 } = options

  // 拼接盐
  const salted = plaintext + salt

  // 计算MD5
  const hash = CryptoJS.MD5(salted).toString(CryptoJS.enc.Hex)

  // 返回截取结果
  if (typeof sliceEnd === 'number') {
    return hash.slice(sliceStart, sliceEnd)
  }

  return hash.slice(sliceStart)
}
